/*
 * 演示接口编写说明
 * @Description: jishupu-admin-template
 * @Author: 技术铺<jishupu@qq.com>
 * @Date: 2021-11-15
 */

/**
 * 编写说明：
 * 1、方法采用小驼峰命名
 *
 * 2、常用固定方法：
 *    index 列表
 *    store 创建
 *    show 详情
 *    update 更新
 *    destory 删除
 *    updateStatus 更新状态
 *    updateSort 更新排序
 *    updateTop 置顶
 *    getParentTree 获取上级分类树
 *
 * 3、http请求方式
 *    get：查看
 *    post：添加
 *    put：修改，如update、patchSort接口
 *    patch：局部修改，包括更新排序、更新状态等，如updateStatus接口
 *    delete：删除
 *
 * 4、extendConfig扩展参数，比如请求时遮罩层加载效果配置
 *    {
 *      showLoading: true/false
 *      loadingText: '加载中...'
 *      querySelector: document.querySelector('.app-container')
 *    }
 *
 * 5、接口返回结果为Promise对象
 *
 */

import request from '@/utils/request'

/**
  * 列表
  * @param {Object} params 请求参数
  * @param {Object} extendConfig 扩展配置
  * @returns new Promise
  */
export function index(params, extendConfig) {
  return request.get('/v1/demo', { params, ...extendConfig })
}

/**
  * 添加
  * @param {Object} params 请求参数
  * @param {Object} extendConfig 扩展配置
  * @returns new Promise
  */
export function store(params, extendConfig) {
  return request.post('/v1/demo', params, extendConfig)
}

/**
  * 查看
  * @param {Number} id 标识
  * @param {Object} extendConfig 扩展配置
  * @returns new Promise
  */
export function show(id, extendConfig) {
  return request.get('/v1/demo/' + id, extendConfig)
}

/**
  * 修改
  * @param {Number} id 标识
  * @param {Object} params 参数
  * @param {Object} extendConfig 扩展配置
  * @returns new Promise
  */
export function update(id, params, extendConfig) {
  return request.put(`/v1/demo/${id}`, params, extendConfig)
}

/**
  * 删除
  * @param {Number | String} id 标识 例：数字1、字符串1,2,3
  * @param {Object} extendConfig 扩展配置
  * @returns new Promise
  */
export function destory(id, extendConfig) {
  return request.delete(`/v1/demo/${id}`, extendConfig)
}

/**
 * 更新状态
 * @param {Number} id 标识
 * @param {Object} params 参数如： { status: 0 }
 * @param {Object} extendConfig 扩展配置
 * @returns new Promise
 */
export function updateStatus(id, params, extendConfig) {
  return request.patch(`/v1/demo/${id}/status`, params, extendConfig)
}

/**
 * 更新排序
 * @param {Object} params 参数如：{sort: [{id: 7, sort: 2}, {id: 8, sort: 1}]}
 * @param {Object} extendConfig 扩展配置
 * @returns new Promise
 */
export function updateSort(params, extendConfig) {
  return request.put(`/v1/demo/sort`, params, extendConfig)
}
